1. Field of the Invention
Embodiments of the present invention generally relate to virtualization in a remote computing system. Particularly, a method and apparatus for scheduling a resource of a virtual machine used within a remote computing system.
2. Description of the Related Art
People utilize various computing environments (e.g., MICROSOFT WINDOWS XP, APPLE MACINTOSH, REDHAT LINUX, and the like). Traditionally, a host computer could only operate one computing environment (e.g., an operating system supporting application software and device drivers).
In remote computing, a Graphical User Interface (GUI) is generated at the host computer and transmitted to a remote computer local to a user. The remote computer may be a “thin” client having only the hardware necessary to connect to and display a media stream at the local computer as well as accept input commands that are then transmitted across the network to a host computer.
Virtualization enables creation of multiple computing environments on a single host computer. Hence, one host computer supports numerous and/or different computing environments for various applications or users (e.g., remote users). Virtualization may be accomplished by a virtualization manager (Hypervisor) and one or more virtual machines, each comprising an operating system and application software resident on the host computer.
Each guest operating system has access to numerous resources of the host computer such as a Central Processing Unit (CPU), a Graphics Processing Unit (GPU), a memory or a network interface. Multiple virtual machines on one host computer tax the resources because they must be shared amongst all of the virtual machines. Accordingly, one virtual machine has to wait until a particular resource is available, which causes latency at the remote computer coupled to the virtual machine. Frequently, several virtual machines may be in a queue for the particular resource. As such, each virtual machine in that queue will be delayed.
Each remote computer in the queue will experience delays (e.g., response to peripheral device commands, accessing and storing data, updated display image representing the desktop and the like). Conventional resource scheduling does not account for quality demands at each remote computer. Hence, prioritization and allocation of common resources (e.g., CPU or GPU processing time) is not optimized for virtualized computing environments.
Therefore, there is need in the art for improved virtualized support for remote computing.